// 函子  处理副作用  异常处理  异步操作
// 返回新的函子对象
// 一个盒子 封装了一个值
class Container {
  constructor(value) {
    this._value = value
  }
  map(fn) {
    return new Container(fn(this._value))
  }
  static of(value) {
    return new Container(value)
  }

  isNothing() {
    return this._value === null || this._value === undefined
  }
  either() {
    // 给出错误信息
    try {
      
    } catch (error) {
      
    }
  }
}

let r = new Container(5).map(x=>x+1).map(x=>x*x)

// 现在要 new 不方便 提供一个静态方法


// maybe函子
// 